Method and systems for nesting objects

ABSTRACT

The present invention is in the field of manufacturing, processing and design, and also packaging. Nesting is the process of placing objects together with minimal spaces between them. The invention is described below in two forms. The first form, set forth in Part I below, is directed to methods and systems for nesting of two dimensional ( 2 D) objects in a target plane. The second form, set forth in Part II below, is directed to methods and systems for nesting three dimensional ( 3 D) objects in a target volume. The specific details of the preferred embodiments are set forth in those respective parts.

FIELD OF THE INVENTION

The present invention is in the field of manufacturing processing andmore particularly relates to methods and systems for nesting of twodimensional objects. Nesting is the process of placing objects togetherwith minimal space between them.

BACKGROUND OF THE INVENTION

There are many design and manufacturing processes in which substantiallytwo dimensional parts-to-be-assembled are initially laid out on and thencut from planar or sheet stock. For example, leather shoes, clothing,pocketbooks, and automobile and furniture upholstery are often formedfrom a plurality of panels, or parts, cut from a cowhide. After cuttingof the panels for such an article, conventional seam joining techniques,such as sewing, are used to assemble the panels to form the finishedarticle. Clothing, upholstery and many other articles of other materialsare similarly designed and manufactured in a similar manner. Such otherarticles include body parts for automobiles, for example, hoods orfenders, which may be stamped from metal sheets, and then subsequentlyshaped to form the final part configuration. Numerous other articles aresimilarly manufactured from planar sheets as well.

In the manufacture of all of these parts, it is important to minimizethe waste which remains after the parts are cut from the sheet stock.While in some cases, where the waste can be re-used, such as in the caseof sheet metal, this factor is of lesser importance, there are manycases where the minimization of waste is of critical importance to thecommercial viability of a product. The latter cases particularly includeshoe manufacture, where the cost of materials, for example cowhides orsynthetic materials, is very high.

In view of such cost considerations, manufacturing processes generallyinclude attempts to minimize waste. However, the conventional attemptsat such minimization have been relatively ineffective. In the leathershoe industry, for example, parts are often manually die cut fromcowhides, where the die is manually placed on the hide by skilled (orrelatively unskilled) workers, typically resulting in maximum yields inthe 50–60% range for the typical irregularly shaped parts. In recentyears, computer controlled layout of parts on a hide have been achieved,resulting in typical yields as high as the 60–70% range.

In U.S. Pat. No. 4,210,041, the present inventors disclosed a method forlaying out, or nesting, a plurality of identical irregular non-polygonalrounded pieces on a parallel edge-bounded sheet material with relativelylittle waste. In accordance with the method of that patent, the salientpoints of the part boundary are connected by straight lines to box thepart boundary in a plane polygonal figure. Then, pairs of such planepolygonal figures are pairwise positioned to within a plane closedparallelogram. Finally, a plurality of such parallelogram are arrangedside-by-side to define a multiple repeat pattern of objects equal inwidth to the planar sheet from which the parts are to be cut. A nestconstructed in accordance with U.S. Pat. No. 4,210,041 does offerimprovement in nesting over prior art techniques; however, the resultingnests are still less than optimal.

It is an object of the present invention to provide an improved methodand system for defining a nest of two dimensional objects.

It is another object to provide an improved method and apparatus forcutting a plurality of two dimensional parts form a sheet with highyield.

SUMMARY OF THE INVENTION

The invention is a method and system for defining placement of aplurality of two-dimensional objects on a target planar surface withminimal void space between them. The invention automatically packs themaximum number of irregular parts possible (preferably, of up to twodifferent shapes) with minimum wasted surface area. The invention uses aheuristical approach, so that intelligent decisions are made in order tocarry only a small percentage of intermediate solutions to completion.In typical cases, this enables the computation time used in the nestingprocess to be reduced from hours to minutes, allowing for a moreinteractive nesting design environment.

The invention uses a combination of topology analysis and numericaliteration to determine an efficient layout in short computation times.The process commences by defining a first sub-nest in a central part ofthe target, grouping parts to each other, and then “grows” or extendsoutward toward the boundaries of the target. The resultant layouts aregenerally parallelogramic and thus angled in nature. The “angled” layoutis contrary to conventional rectangular (90 degree) nesting practice. Aheuristic approach is used with an interactive process to curtail longcomputation times and to produce nested layouts much faster.

The nesting method and system of the invention maximizes materialutilization from the “center outwards” by minimizing the voids betweennested parts. In contrast, conventional nesting practice first defines atarget area and then fits parts starting from one edge and “flowing”parts across the target area until the opposite edge is reached.

The heuristics used to curtail long computation times, are intermediatemeasures of how good a nest is. As the process proceeds from one stageto the next, measures of nesting effectiveness are calculated and only asmall percentage of all the possibilities are allowed to continue tohigher stages. This “nest culling” heuristical process is effective insubstantially reducing computation times. By allowing only the bestintermediate nests to proceed to the “tiling” stages, layout times aretypically reduced with no practical loss in nesting efficiency.

In one form, the invention is a 2D method defining a packingconfiguration for a plurality of two dimensional (2D) objects in atarget plane. The method comprises the computer generated steps of (anda system for performing those steps):

-   -   A. generating signals defining each of said 2D objects with        respect to an object coordinate system having orthogonal axes X₀        and Y₀, in terms of a plurality of points representative of        boundary points on said objects,    -   B. associating two of said objects to define an object pair,    -   C. generating a nest signal representation of said objects of        said object pair nested with respect to a nest coordinate system        having orthogonal axes X_(N) and Y_(N), to define a plurality of        close-packed candidate nests in which the pairwise positions of        two said objects of each candidate nest are characterized by        relatively small planar spaces between the respective objects,    -   D. selecting a subset of said candidate nests in accordance with        predetermined nest criteria,    -   E. for each of said selected candidate nests, generating a tile        signal representative of two such nests tiled with respect to a        tile coordinate system having orthogonal axes X_(T) and Y_(T),        said tiling steps including the sub steps of:        -   i. generating a primary tile signal representative of said            two nests tiled with respect to said X_(T) axis by            translating said nests with relative motion in the direction            of said X_(T) and Y_(T) axes, to define a plurality of            candidate primary tiles in which the pairwise positions of            said two nests of each candidate primary tile are            characterized by relatively small planar spaces between said            nests,        -   ii. selecting a subset of said candidate primary tiles in            accordance with predetermined primary tile criteria,        -   iii. for each of said selected primary tiles, generating a            secondary tile signal representative of a nest and said            primary tile tiled with respect to said Y_(T) axis by            translating said nest with respect to said primary tile with            relative motion in the direction of said X_(T) and Y_(T)            axes, to define a plurality of candidate secondary tiles in            which the pairwise positions of said nest and said primary            tile are characterized by relatively small planar spaces            between said nest and the nests of said primary tile,        -   iv. selecting one of said candidate secondary tiles in            accordance with predetermined secondary tile criteria,            thereby defining the optimal nest and primary tile, said            optimal nest defining said packing configuration.

In one form the 2D method further comprises the further steps of:

-   -   F. generating an initial tile signal representative of an        initial secondary tile positioned in said target plane at a        position other than adjacent the boundary of said target plane,        and    -   G. generating an area packing signal representative of said        initial tile as augmented additional secondary tile extending        successively from said initial secondary tile in the direction        of each of said X_(T), and Y_(T) axes, whereby adjacent        secondary tiles are substantially identically pairwise        configured in said target plane in the direction of said X_(T)        and Y_(T) axes.

In another form, the invention is a method of defining a packingconfiguration for a plurality of three dimensional (3D) objects in atarget volume. In this form, the invention comprises the computergenerated steps of (and a system fro performing those steps):

-   -   A. generating an object signal defining each of said 3D objects        with respect to an object coordinate system having orthogonal        axes X₀, Y₀ and Z₀, in terms of a plurality of points        representative of boundary points on said objects,    -   B. associating two of said objects to define an object pair,    -   C. generating a nest signal representative of said objects of        said object pair nested with respect to a nest coordinate system        having orthogonal axes X_(N), Y_(N) and Z_(N), to define a        plurality of close-packed candidate nests in which the pairwise        positions of said objects of each candidate nest are        characterized by relatively small volumetric spaces between the        respective objects,    -   D. selecting a subset of said candidate nests in accordance with        predetermined nest criteria,    -   E. for each of said selected candidate nests, generating a tile        signal representative of two of said nests tiled with respect to        a tile coordinate system having orthogonal axes X_(T), Y_(T) and        Z_(T), said tile generating step including the sub steps of:        -   i. generating a primary tile signal representative of said            two nests tiled with respect to said X_(T) axis by            translating said nests with relative motion in the direction            of said X_(T), Y_(T) and Z_(T) axes, to define a plurality            of candidate primary tiles in which the pairwise positions            of said two nests of each candidate primary tile are            characterized by relatively small volumetric spaces between            said nests,        -   ii. selecting a subset of said candidate primary tiles in            accordance with predetermined primary tile criteria,        -   iii. for each of said selected primary tiles, generating a            secondary tile signal representative of one of said nests of            said primary tiles and said primary tile tiled with respect            to said Y_(T) axis by translating said nest with respect to            said primary tile with relative motion in the direction of            said X_(T), Y_(T) and Z_(T) axes, to define a plurality of            candidate secondary tiles in which the pairwise positions of            said nest and said primary tile are characterized by            relatively small volumetric spaces between said nest and the            nests of said primary tile,        -   iv. selecting one of said candidate secondary tiles in            accordance with predetermined secondary tile criteria,        -   v. for each of said selected secondary tiles, generating a            tertiary tile signal representative of two of said secondary            tiles tiled with respect to said Z_(T) axis by translating            said secondary tiles with respect to each other with            relative motion of in the direction of said X_(T), Y_(T),            and Z_(T) axes to define a plurality of tertiary tiles in            which the pairwise positions of said secondary tiles are            characterized by relatively small volumetric spaces between            said secondary tiles,        -   vi. selecting one of said tertiary tiles from said candidate            tertiary tiles in accordance with predetermined tertiary            tile criteria, thereby defining an optimal nest of said            primary tile and said secondary tile, said optimal nest            defining said packing configuration.

In another form the 3D method further comprises the further step of

-   -   F. generating an initial tile signal representative of an        initial tertiary tile positioned in said target volume at a        position other than adjacent the boundary of said target volume,        and    -   G. generating a volume packing signal representative of said        initial tile as augmented additional tertiary tiles extending        successively from said initial tertiary tile in the direction of        each of said X_(T), Y_(T), and Z_(T) axes, whereby adjacent        tertiary tiles are substantially identically pairwise configured        in said target volume in the direction of said X_(T), Y_(T), and        Z_(T) axes.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other object of this invention, the various featuresthereof, as well as the invention itself, may be more fully understoodfrom the following description, when read together with the accompanyingdrawings in which:

FIG. 1 shows a block diagram of a system in accordance with theinvention;

FIG. 2 shows an exemplary part to be nested;

FIG. 3 shows the total nest extent for a nest of the part of FIG. 2;

FIG. 4 shows the partial nest extent for a nest of the part of FIG. 2;

FIGS. 5A and 5B shows two nest approaches for a nest of the part of FIG.2;

FIGS. 6A–6E show the nesting procedure for the exemplary part of FIG. 2;

FIG. 7 shows a set up and actual tile for a primary tile for nests ofthe exemplary part of FIG. 2;

FIG. 8 illustrates the secondary tiling step of the invention; and

FIGS. 9 and 10 show exemplary nesting layouts determined using themethod and system off the invention.

DESCRIPTION OF THE PREFERRED EMBODIMENT

A system 10 embodying the invention is shown in FIG. 1. The system 10includes a part input device 12 a programmed digital computer 14 with anassociated display 16 and an output layout buffer printer 18. The partinput device 12 may be a conventional computer running a computer aideddesign program, such as AutoCad. The computer may be an IBM typePentium-based or an Apple PowerPC-based personal computer (with aconventional monitor for display 16) programmed to perform the processof the invention. The layout buffer 18 may include a conventionalstorage medium for storing the layouts determined by the programmeddigital computer 12.

The following description sets forth how two dimensional (2D) parts areinput and defined and how their areas are computed. Data structures arethen defined that hold the nesting and tiling information as well as themeasure for their incremental effectiveness (permitting use of theheuristics) along the process. Finally, the following sequential stepsin the procedure: (1) Nesting, (2) Primary Tiling, (3) Secondary Tiling,and (4) Layout.

The computer 12 uses a program that compresses 2D irregular figures(from device 12) onto a target stock area, with minimum area wastedbetween the figures. The program combines geometric analysis of theparts to be laid out and numerical iteration for exhaustiveness. As amain feature of the process, the pats are nested into parallelogramicorientations and not rectangular orientations (the traditional method).This flexibility in orientation allow a larger compression of the partsand a lesser waste of material stock. In the preferred embodiment thiscomputer program nests only two different geometrical shapes, and then“tiles” those nested pairs. The program also performs “nest culling” toavoid unnecessary computation. Major tasks performed in the inventionare:

-   -   Task 1: Define and implement input of the geometry of parts        (components) and the target.    -   Task 2: Provide an intersection algorithm/process.    -   Task 3: Add multiple numerical iteration loops for the various        nesting/tiling steps.    -   Task 4: Implement measurement of nesting success as void areas        and nest extent areas.        Task 1:

The component parts (to be nested) and the target (upon which the partsare nested) are defined in two dimensional space. In this illustratedembodiment, a part can be “drawn” in the two dimensional computer screenof monitor 16 and the computer 14 then stores this information as a listof x-y coordinates for the vertices of the boundary of a piecewiselinear model of the part. In other words, the parts are defined asmultisided polygons. These polygons can typically have 10's or 100's ofsides depending on the complexity of the figure (curvature of its sides)and the required accuracy of the nesting solution. As a result, partsare stored in files which consist of a 2 column table of x,y coordinatepairs for all the vertices of the part.

Task 2:

The intersection procedure checks for collisions between parts which maybe considered to translate in two dimensional space. This is done in twodimensions by computing the smallest distance between all the verticesof a part number 1 (x₁,y₁) and a part number 2 (x₂,y₂). This is ((x₂²−x² ₁)+(y₂ ²−y₁ ²))^(1/2). In addition, this check for collisions isdone between every “peripheral node” of component 1 with every“peripheral node” of part 2. Once that smallest distance is obtained, itis subtracted from every node on one of the parts into what constitutesthe translation of this part toward the other one until the two partsbasically “touch” each other in the two dimensional space.

The intersection procedure constitutes a translation in a particulardirection which is not controlled by the user, but is determined by theway the parts are placed in the “working area”. In order to control thedirectionality of the “approach/collision” process, the intersection ofpart 1 vertices with part 2 sides and part 2 vertices with part 1 sidesis determined. The computation of vertex-to-side distances is somewhatmore involved and is described below in connection with the nestingsection of the process. In addition “minimum distance part-to-partapproaches” are done in the X (horizontal) direction. Directionality isachieved by rotating the parts, nests or tiles a specified angle.

Task 3:

The nesting and tiling steps have “primary” and “secondary” moves. Thesemoves are made so as to bring two parts or two nests close to each otherin order to package them as tightly as possible. The primary move ismade in the X direction. The parts (or nests) are placed side by sideand then one of them is offset in the Y direction. The amount of thisoffset (from a maximum of the part's height to the negative of thepart's height) constitutes the first iteration loop. In other words, theprimary move is made for every Y offset. Once the primary move is made,the secondary move is performed in the Y direction. Then a rotation ofthe figures is performed for the appropriate angle (90 degrees in thiscase) so as to bring the approaching direction in the X direction. Then,the secondary move is performed again in the X direction. Thisprimary/secondary move iteration loop is nested within a partside-to-side combination loop. This side-side-combination loop cyclesthrough all the possible side-side combinations of the parts nested. Inaddition, after every X direction move (for both primary and secondaryapproaches), a “tangential” move is made in the direction of theintersecting vertex/side. Again the system is rotated by the appropriateangle and another X direction approach is performed. (This slides thevertex along the intersecting side for further compactness). Finally,within the primary/secondary and tangential moves, another loop isperformed which cycles through all possible vertex-to-side combinationswhile looking for the minimum approach intersection process set forthunder Task 3 above.

Task 4:

The necessary geometrical computations for the size of the nest are“Total Event” are determined in Task 4. Obtaining the area of anassembly of components is a straight forward calculation. The extent ofthe void areas between the components is determined. Typically, this isa relatively complex and computer intensive calculation. However,instead of computing nest's void areas, the preferred form of theinvention calculates the “Partial Extent” of a nest. As set forth below,in the nesting section of the process description, this partial extentincludes a measure of the area intersected between parts when forming anest. This area saved is the inverse or complement of the void areaproposed as a heuristic. This “intersection” saved area is much easierto calculate, and has similar bearing in terms of the effectiveness of anest as the proposed wasted void area.

The success of the heuristic-based process for nest culling isevaluated, along with total extent and partial extent. These heuristicslimit the number of nests passed to the primary tiling stage, and arealso applied to the primary tiling passage to secondary tiling stage.This further limits the search tree and has dramatically improved theperformance of the expensive (computer time-wise) tiling stage. A systemof weighting factors is used for the two main heuristic variables, so asto ascertain the relative importance of one versus the other.

Computer Program Description

This section provides a brief description of the program used incomputer 14.

The hardware platform is an Apple Power Macintosh computer with a 17″color monitor and laser printer. The CAD software used for thisembodiment consists of two packages—Autodesk's AutoCAD and Graphsoft'sMiniCAD. This embodiment was developed using the following combinationof software tools: 1—Macintosh Programmer's Workship (MPW) for thedevelopment and coding environment (including editing and debugging);2—FORTRAN Compiler for the compilation of the program; and 3—MiniCAD forthe part input and output layout visualization. The CAD package allowsease in description on the parts, and interactive visualization of thelayouts. Alternatively, AutoCAD could be used.

The inner regions of the nests have great importance in the invention(as opposed to the peripheral or edge regions near the target'sboundaries.) The computation is segmented into four sequential steps:Nesting, Primary Tiling, Secondary Tiling, and Layout. The process isinitiated with the nesting step, where two irregular objects or partsare taken and brought together until they “touch” each other on theirperiphery. This grouping of two parts is called a “nest”. The parts arebrought towards each other as close together as possible for form ascompact as possible a nest. Depending on the complexity of the partsbeing nested, the computer program actually performs from many hundredsto many thousand different nests and ranks them according to theircompactness (using heuristic variables previously described).

Once the nests are formed and ranked, a predetermined number of thesenests (the ones that ranked highest) are passed to the primary tilingstep. In this step two nests are brought together in the X direction toform a primary tile or “ptile”. A ptile is made of two nests or fourparts. The same rational is used to form a ptile as to form a nest. Inother words, a grouping of two nests is created that forms the mostcompact unit. Typically, a few hundred ptiles are generated per eachnest passed from the nesting step. These ptiles are consequently rankedusing heuristic variables for compactness.

A small percentage of the ptiles formed (a predetermined number) arethen passed onto the secondary tiling step. In this case, two ptiles arebrought together in the Y direction to form a secondary tile or “stile”.A stile is made up of two stiles or four nests or eight parts. Again,the same rational as before for nest formation is used, and in theprocess, over a thousand different stiles are generated for each of theptiles passed onto this step form the primary tiling step. Finally, asimple layout routine takes the data generated for the best secondarytile and computes the ideal parallelogramic area needed to contain asingle nest. A computation of the utilization ratio follows bycalculating the actual part area and dividing that by the neededparallelogramic area. Then the layout routine creates a file with theCAD commands that generate the best layout for the parts nested.

A step by step description of the computer program will now bedescribed, starting with a description of the parts and ending with adescription of the computation steps: Nesting, Tiling and Layout.

Part Description

In order to describe and input parts in two dimensions, they are definedas polygons in the xy plane. Each polygon can be made of (typically) 100to 1000 vertices described by x,y coordinate pairs. This method for partinput enables description of parts in a simple way, which includecurvatures, for the which small polygonal sides are used (vertices arevery close together where the curvatures need to be describedaccurately).

As an example of this methodology, FIG. 2 shows an exemplary part,composed of ten vertices in the xy plane and labeled with coordinates(x₁,x₂) through (x₁₀,y₁₀). This simple figure is thus fully describedwith a set of 10 x,y coordinates pairs for a total of twenty numbers.The part description for the part of FIG. 2 is stored in a small textfile with all the x,y coordinate pairs. Thus, design and input of partsis very simple using this mode.

Part Area Calculation

Part areas are calculated as three different areas: (1) the actual partarea, (2) the total area extent for nests and tiles, and (3) the partialarea extent for nests and tiles. The computation of the part area isstraight forward. If y_(min) is the smallest y coordinate, then the partarea A is given by:$A = {\sum\limits_{i = 0}^{{Nv} - 1}\;{{\, 1}\text{/}2\left( {X_{i + 1} - X_{i}} \right)\left( {Y_{i + 1} + Y - {2Y_{\min}}} \right)}}$where N_(v) is the number of vertices, (N_(v)=10 in the case of the partof FIG. 2).

The total extent area is calculated as the smallest rectangle that cancontain a particular nest or tile. This is illustrated in FIG. 3. Thistotal area extent only involves the knowledge of the maximum and minimumx,y values for the parts within the nest or tile. The partial areaextent illustrated in FIG. 4, is a more accurate measure of the actualarea used by the individual parts within the nest or tile.

This partial extent is calculated by first computing the areas of thesmallest rectangles encompassing individual parts and subtracting the“intersecting” area between the parts being grouped into the nest ortile. It is a smaller area than the total extent and it points moredirectly to a measure of part grouping compactness.

The two extents described above are used through out the various stepsin the computer program as the two heuristic variables to determine theeffectiveness of a particular nest or primary tile. Weighting factorsare assigned as inputs to the computer program for these two extents soas to prefer one more to the other in the calculation. For theillustrated embodiment, both weights are 1.0 (but other values may beused) for nest and primary tile culling.

As an example of how these extents are computed, the followingalgorithms show these calculations for a nest made up of left and rightparts (subscripts “l” and “r”). Here, min,max corresponds to theminimum, maximum coordinate a given part:

-   TotExt=[max(xmax_(l),xmax_(r))−min(xmin_(l),xmin_(r))]*[max(ymax_(l),ymax_(r))−min(ymin_(l),ymin_(r))]-   Ext_(l)=(xmax_(l)−xmin_(l))*(ymax_(l)−ymin_(l))-   Ext_(r)=(xmax_(r)−xmin_(r))*(ymax_(r)−ymin_(r))-   PartExt=Ext_(l)+Ext_(r)−[xmax_(l)−xmin_(r)]*[min(ymax_(l),ymax_(r))−max(ymin_(l),ymin_(r))]    Basic Structures

The computer program contains five storage structures, where all thedata for the various characteristics of the parts, nests, tiles andlayouts are accumulated. They are the /Part/, /Nest/, /Ptile/, /STile/structures (denoted symbolically surrounded by slashes “/”). Thesevariables are more completely described below. For reference, thevariables within each structure are now briefly described:

/Part/

/Part/ contains variables for the storage of the following partcharacteristics:

-   -   1. Part name which correspond to the text file which stores the        part's data    -   2. Number of vertices—N_(v)    -   3. The x-y coordinates for the minimum and maximum values—X min        . . . Ymax    -   4. The X-Y arrays for the x-y coordinates of dimension N_(v)        /Nest/

/Nest/ contains variables for the storage of the following nestcharacteristics, each of which is dimensioned to (100) for the maximumnumber of possible nest that could be generated:

-   -   1. Left,Right part's side number—nsidel, nsider (an integer        between 1–4)    -   2. The right part's displacement relative to the left part to        form the nest—dxn,dyn    -   3. The total and partial extent for the nest—TotExtn,PartExten    -   4. The ranked sequence from best to worst nest—Seqncn    -   5. The total number of nests generated by the nesting step (not        an array)—Nn        /PTile/

/Ptile/ contains variables for storage of the following Primary tilecharacteristics, each of which is dimensioned to (50,10) for the maximumnumber of possible nests that are allowed to pass to the primary tilingstep=50, and the maximum number of ptiles generated per each nestpassed=10.

-   -   1. The right nest's displacement relative to the left nest, to        form the primary tile—dxp,dyp    -   2. The total and partial extent for the ptile—TotExtp,PartExtp    -   3. The ranked sequence from best to worst ptile for both the        nest passed and the ptile for that nest (singly dimensioned to        (50)—Nseqncp,TSeqncp    -   4. The total number of ptiles generated by the primary tiling        step for each nest passed to it (singly dimensioned to (50))—Np        /Stile/

/Stile/ contains variables for the storage of the following Secondarytile characteristics, each of which is dimensioned to (50,1080) for themaximum number of possible ptiles that are allowed to pass to thesecondary tiling step=50, and the maximum number of stiles generated pereach ptile passed=1080.

-   -   1. The top ptile's displacement relative to the bottom ptile, to        form the secondary tile dxs,dys    -   2. The effective parallelogram area used per part—Pa    -   3. The ranked sequence from best to worst stile for both the        ptile passed and the stile for that ptile(singly dimensioned to        (50))—Nseqncs,TSeqncs    -   4. The total number of stiles generated by the secondary tiling        step for each ptile passed to it (singly dimensioned to (50))—Ns        /Layout/

/Layout/ contains variables for the storage of the following Layoutcharacteristics.

-   -   1. The nest displacement for the best layout—dxlayn,dylayn    -   2. The ptile displacement for the best layout—dxlayp,dylayp    -   3. The stile displacement for the best layout—dxlays,dylays    -   4. The smallest effective parallelogram area used per part, in        the final layout—Pamin        Nesting

Nesting is the process by which two irregular objects or parts are takenand brought together until they “touch” each other on their periphery.This grouping of two parts is called a “nest”. A nest is typicallyformed from two different parts, but for the pictorial examples thatfollow, the same part is used. The parts are brought towards each otheras close together as possible to form a nest as compact as possible.

First, the parts to be nested are circumscribed inside the smallestpossible rectangle. The four lateral faces of this rectangle arenumbered from 1 to 4. A loop is set up to go through all possiblecombinations for each face of the left part to be approached by eachface of the right part, a total of the combinations in all. FIGS. 5A and5B illustrate two nest approaches where FIG. 5A shows nesting for sides1 and 2 (left and right part respectively) and FIG. 5B shows sides 1 and1.

Nesting is accomplished in two steps: the axial move (in the x directionor direction of approach), and the tangential move for further reductionof the overall area of the nest. The left part of the nest remainsstatic whereas the right part is iteratively moved towards the left partin search for the maximum approach to it. Since the approach is in the xdirection, a grid is first defined in the y direction which contains thestarting locations for the right part's approach toward the left part. Atotal of ten grid locations is implemented in the y direction. Combiningthese y grid points with the number of face to face combinations, themaximum number of nests is generated by the program, which is 100.

The axial move is accomplished by calculating N_(v) intersectiondistances from the left part's vertices towards the right part's sides,and N_(v) intersection distances from the right part's vertices towardthe left part's sides. The amount that the right part can now be movedtowards the left one is the smallest of the 2-N_(v) distances calculatedfor each of the 100 (maximum) nests to be computed.

The tangential move is an adjustment that is implemented once the axialmove has been performed. For the tangential move, the part displacedwith the intersecting vertex along the other part's intersecting side inthe direction along this side until another collision occurs forming amore compact nest. In order to accomplish this move, the parts arerotated by an angle such that the intersecting side is horizontal,allowing use of the same intersection routine as for the axial move,saving a great deal of computation time.

FIGS. 6A–6E show this nesting procedure for the exemplary part of FIG.2. FIG. 6A shows the set up before the axial move. FIG. 6B shows thegeometry after the axial move. FIG. 6C shows the situation afterrotation is done so as to render the tangential direction horizontal. Atthis point, a similar intersection algorithm procedure to the axial moveis performed in order to obtain the smallest intersecting line tofurther approach the right part towards the left one. FIG. 6D depictsthe set up after the right part has been moved, and finally; FIG. 6Eshows the final nested situation with the frame of reference rotatedback to the original position.

Once the nests are formed, their total and partial area extents arecalculated and stored appropriately. Then, these nests are sorted andsequenced, from best to worst, by seeking for the smallest area extents.Weight factors are applied to each of the two heuristic variables inorder to investigate their individual effectiveness. This process isreferred to as Nest Ranking.

Primary Tiling

Once the nests are formed and ranked, a predetermined number of thesenests (the ones that ranked highest) are passed to the primary tilingstep. In this step, two nests are brought together in the x direction toform a primary tile or “ptile”. A ptile is made of two nests or fourparts. The same rationale is used to form a ptile as to form a nest. Theprimary tiling procedure starts by placing two nests side by side in thex direction. As in the nesting step, the left nest remains staticwhereas the right nest is moved towards the left one as much aspossible.

A ten point grid is formed in the y direction for the iterative. Sincethe maximum number of nests passed to the primary tiling step is 50, amaximum of 500 ptiles are generated. Once the two nests are set up andmade ready for axial compression (in the x direction), the intersectionalgorithm is recalled in order to calculate the smallest distance toapproach the right nest towards the left one until any part on the rightnest touches any part on the left nest. The parts set up in this processis done in the following manner:

-   -   Part 1: Left Part—Left Nest    -   Part 2: Right Part—Left Nest    -   Part 3: Left Part—Right Nest    -   Part 4: Right Part—Right Nest

The intersection algorithm routine is then performed four times insequence to check for the smallest axial approach. The routine is calledfor parts 1 and 3, then for parts 1 and 4, then for parts 2 and 3, andfinally for parts 2 and 4. This allows investigating of the collision ofany of the parts on the left nest with any of the parts on the rightnest. FIG. 7 shows first the set up situation for a particular primarytile of the exemplary part and then the actual tile achieved.

Secondary Tiling

A small percentage of the ptiles formed (a predetermined number) arethen passed onto the secondary tiling step. In the secondary tilingstep, as shown in FIG. 8, two ptiles are brought together in the ydirection to form a secondary tile or “stile”. An stile is made up oftwo ptiles or four nests or eight parts. In order to set up the geometryfor secondary tiling, first two ptiles are placed on the bottom of thedomain. Then one more nest is set up along the top that will be nesteddownwards towards the two ptiles near the bottom of the space. The twoptiles on the bottom are composed of parts numbered 1 through 8 fromleft to right. The two parts making up the nest at the top are labeled 9and 10. The top nest (the one to be dynamically moved to form the stile)is positioned according to whether the ptile has downward or upward flow(dyp<0 or dyp>0).

FIG. 8 describes the geometry prior to the secondary tiling iterationfor the case of dyp>0. In that Figure the top nest is positioned justabove the bottom left three nests and to the left of the bottomrightmost nest. The top nest is then iterated on a x grid in a similarmanner as the ptile process, except that the x displacement for thisgrid (as shown in the figure) is equal to the primary tile period.Again, the same rationale as before is used and in the process, tendifferent stiles are generated for each of the ptiles passed onto thisstep form the primary tiling step.

In order to do a y direction secondary tiling, the coordinate system isfirst rotated 90 degrees and the previously described axial (xdirection) intersection algorithm is performed. In this case, thesmallest approach distance between any of the two top parts (parts no. 9and 10) and any of the six bottom parts is detected (parts no. 1 through6 for the dyp>0 case). In the case of dyp<0, the top nest is set up justto the right of the bottom leftmost nest. As a result, the intersectiontest is made between parts 9 and 10 (top nest) and parts 3 through 8(bottom tiles).

Layout

Once the secondary tiling is performed, two numbers are known: theprimary and the secondary tiling period. These are the numbers thatrepresent the displacements in the primary and secondary tilingdirections, which enable replication of as many nests as desired on askewed plane formation for these parts. Finally, a simple layout routinetakes the data generated for the best secondary tile and computes theideal parallelogram area needed to contain a single nest. Thisparallelogram area is calculated using the coordinates for the twodisplacements necessary to form a layout: the primary tiling period(x_(p),y_(p)), and the secondary tiling period (x_(s), y_(s)). The areaof the parallelogram forms is then calculated from the followingformulae: $l_{p} = \sqrt{x_{p}^{2} + y_{p}^{2}}$$l_{s} = \sqrt{x_{s}^{2} + y_{s}^{2}}$${\cos\mspace{11mu}\theta_{ps}} = \frac{{x_{p}x_{s}} + {y_{p}y_{s}}}{l_{p}l_{s}}$A = l_(p)l_(s)  sin   θ_(p s)

A computation of the utilization ratio follows by calculating the actualpart area and dividing that by the needed parallelogram area. Then, thelayout routine creates a file with the CAD commands that generate thebest layout for the parts nested.

With the invention, very efficient layouts can be determined withreasonable computation times, using two heuristical variables toeliminate unnecessary branches in the computation process. For simpleparts, around 20 nests and primary tiles can be used for passage tohigher tiling stages, and still achieve near optimal packingefficiencies. Other numbers of nests and primary tiles can also be used.

FIGS. 9 and 10 show exemplary nesting layouts for components of a shoe,which were determined using the invention.

The invention may be embodied in other specific forms without departingfrom the spirit or essential characteristics thereof. The presentembodiments are therefore to be considered in all respects asillustrative and not restrictive, the scope of the invention beingindicated by the appended claims rather than by the foregoingdescription, and all changes which come within the meaning and range ofequivalency of the claims are therefore intended to be embraced therein.

II. Method and System for Nesting Three Dimensional Objects in a TargetVolume

REFERENCE TO RELATED APPLICATION

This application is a non-provisional application based on provisionalU.S. application Ser. No. 60/069,561, filed on Dec. 12, 1997. Thatapplication is incorporated by reference herein.

FIELD OF THE INVENTION

The present invention is in the field of manufacturing packaging anddesign and more particularly relates to methods and systems for nesting(or packaging) of three dimensional objects in a target volume. Nestingis the process of placing objects together with minimal space betweenthem.

BACKGROUND OF THE INVENTION

There are many design and manufacturing processes in which substantiallytwo dimensional parts-to-be-assembled are initially laid out on and thencut from planes or sheet stock. For example, leather shoes, clothing,pocketbooks, and automobile and furniture upholstery are often formedfrom a plurality of panels, or parts, cut from a cowhide. After cuttingof the panels for such an article, conventional seam joining techniques,such as sewing, are used to assemble the panels to form the finishedarticle. Clothing, upholstery and many other articles of other materialsare similarly designed and manufactured in a similar manner. Such otherarticles include body parts for automobiles, for example, hoods orfenders, which may be stamped from metal sheets, and then subsequentlyshaped to form the final part configuration. Numerous other articles aresimilarly manufactured from planar sheets as well.

In the manufacture of all of these parts, it is important to minimizethe waste which remains after the parts are cut from the sheet stock.While in some cases, where the waste can be re-used, such as in the caseof sheet metal, this factor is of lesser importance, there are manycases where the minimization of waste is of critical importance to thecommercial viability of a product. The latter cases particularly includeshoe manufacture, where the cost of materials, for example cowhides orsynthetic materials, is very high.

In view of such cost considerations, manufacturing processes generallyinclude attempts to minimize waste. However, the conventional attemptsat such minimization have been relatively ineffective. In the leathershoe industry, for example, parts are often manually die cut fromcowhides, where the die is manually placed on the hide by skilled (orrelatively unskilled) workers, typically resulting in maximum yields inthe 50–60% range for the typical irregularly shaped parts. In recentyears, computer controlled layout of parts on a hide have been achieved,resulting in typical yields as high as the 60–70% range.

In U.S. Pat. No. 4,210,041, the present inventors disclosed a method forlaying out, or nesting, a plurality of identical irregular non-polygonalrounded pieces on a parallel edge-bounded sheet material with relativelylittle waste. In accordance with the method of that patent, the salientpoints of the part boundary are connected by straight lines to box thepart boundary in a plane polygonal figure. Then, pairs of such planepolygonal figures are pairwise positioned to within a plane closedparallelogram. Finally, a plurality of such parallelogram are arrangedside-by-side to define a multiple repeat pattern of objects equal inwidth to the planar sheet from which the parts are to be cut. A nestconstructed in accordance with U.S. Pat. No. 4,210,041 does offerimprovement in nesting over prior art techniques; however, the resultingnests are still less than optimal.

Part I of the disclosure as set forth above discloses improvements innesting of two dimensional objects. That application is incorporated byreference herein.

Further, there is a need to nest three dimensional objects in a targetvolume.

Typically three dimensional objects are manually, or by machine, packedin target volumes with less than optimal techniques. It would beadvantageous in many industries to use an optimal technique. For examplein the container shipping industry, containers are packed with objectsto be shipped using manually determined placement of the object,generally starting from one border of the container and adding objectsone at a time until the container is “full”. There are of course caseswhere an optimized process is easily realized, such as where identicalcubic objects are placed in a container having dimensions which areinteger multiples of the dimensions of each side of the cubic object.Generally, however, the cubic shape and those container dimensionconstraints are not present and the conventional packaging methodsresult in a “filled” container with substantial void regions between thepacked objects.

It is an object of the present invention to provide an improved methodand system for defining a nest of three dimensional objects.

It is another object to provide an improved method and apparatus forpackaging a plurality of three dimensional parts in a target volume.

SUMMARY OF THE INVENTION

The invention is a method and system for defining placement of aplurality of three-dimensional (3D) objects in a target volume withminimal void space between them. The invention automatically packs themaximum number of irregular parts possible (preferably, of up to twodifferent shapes) with minimum wasted interpart void regions. Theinvention uses a heuristic approach, so that intelligent decisions aremade in order to carry only a small percentage of intermediate solutionsto completion. In typical cases, this enables the computation time usedin the nesting process to be reduced from hours to minutes, allowing fora more interactive nesting design environment.

The invention uses a combination of topology analysis and numericaliteration to determine an efficient layout in short computation times.The process commences by defining a first sub-nest in a central part ofthe target volume, grouping parts to each other, and then “grows” orextends outward toward the boundaries of the target volume. Theresultant packing layouts are generally parallelogramic, angled innature. The “angled” layout is contrary to conventional rectangular (90degree) nesting practice. A heuristic approach is used with aniteractive process to curtail long computation times and to producenested packing layouts much faster.

The nesting method and system of the invention maximizes target volumeutilization from the “center outwards” by minimizing the void regionsbetween nested parts. In contrast, conventional nesting practice firstdefines a target area, and then fits parts starting from one boundary ofthe target volume and “flows” parts across the target volume until theopposite edge is reached.

The heuristics used to curtail long computation times, are intermediatemeasures of how good a nest is. As the process proceeds from one stageto the next, measures of nesting effectiveness are calculated and only asmall percentage of all the possibilities are allowed to continue tohigher stages. This “nest culling” heuristical process is effective insubstantially reducing computation times. By allowing only the bestintermediate nests to proceed to primary, secondary and tertiary“tiling” stages, layout times are typically reduced with no practicalloss in nesting efficiency.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other object of this invention, the various featuresthereof, as well as the invention itself, may be more fully understoodfrom the following description, when read together with the accompanyingdrawings in which:

FIG. 11 shows a block diagram of a system in accordance with theinvention;

FIGS. 12A and 12B show an exemplary part to be nested;

FIG. 13 shows the total nest extent for a nest of the part of FIG. 12;

FIG. 14 shows the partial nest extent for a nest of the part of FIG. 12;

FIGS. 15A and 5B shows two nest approaches for a nest of the part ofFIG. 12;

FIGS. 16A–16E show the nesting procedure for the part of FIG. 12;

FIGS. 17A and 17B show two “better” nests of the part of FIG. 12;

FIGS. 18A and 18B show a set up and actual tile respectively for aprimary tile for nests of the part of FIG. 12;

FIG. 19 shows the geometry prior to secondary tiling for the part ofFIG. 12;

FIG. 20 illustrates the secondary tiling step for the part of FIG. 12;and

FIGS. 21, 22 and 23 show final 3D layouts for the part of FIG. 12.

DESCRIPTION OF THE PREFERRED EMBODIMENT

The invention is a method and system of nesting a plurality of irregularthree dimensional parts into a target volume. The method (and system)uses a combination of topology analysis and numerical iteration to findan efficient layout in short computation times. It starts from aninterior (and preferable “center”) of the target volume, grouping partsto each other and then “grows” or extends outwards toward the boundariesof the target volume. The resultant packaging layouts are parallelepipedlike in nature. This “angled” layout approach is opposite toconventional rectangular (90 degree) nesting practice. A heuristicapproach is used in order to curtail long computation times and torapidly produce nested layouts, giving a designer a much greaterinteractive responses in his task.

The method and system of the invention maximizes volume utilization fromthe “center outwards” by minimizing the voids between nested parts.

The heuristics used in order to curtail long computation times, areintermediate measures of how good a nest is. As the computation proceedsfrom one stage to the next, these measures of nesting effectiveness arecalculated and only a small percentage of all the possibilities areallowed to continue to higher stages. This “nest culling” heuristicalprocess substantially reduces computation times. By allowing only thebest intermediate nests to proceed to tiling stages, layout times arereduced typically from hours of computation to minutes, with nopractical loss in nesting efficiency.

A system 110 embodying the invention is shown in FIG. 11. The system 110includes a part input device 112 a programmed digital computer 114 withan associated display 116 and an output layout buffer 118. The partinput device 112 may be a conventional computer running a computer aideddesign program, such as AutoCad. The computer may be an IBM typePentium-based or an Apple PowerPC-based personal computer (with aconventional monitor for display 116) programmed to perform the processof the invention. The layout buffer 118 may include a conventionalstorage medium for storing the layouts determined by the programmeddigital computer 112.

The computer program for computer 110 nests many irregular 3D shapesinto a regularly shaped “box”. In defining that program, there are fourtasks which are listed below:

Objective I: Three dimensional extension of the nesting algorithms ofPart I of this disclosure as set forth above.

-   -   Task 1: Define and implement input of the geometry of parts        (components) and targets boxes in three dimensions.    -   Task 2: Extend our main intersection algorithm to three        dimensional domain.    -   Task 3: Add three dimensional numerical iteration loops for the        part's depth.    -   Task 4: Change measurement of nesting success to void volumes        and nest extent volume as opposed to areas.”        An automatic three dimensional packaging method and system        computes the geometric layout of the various components within        the target “box” in an efficient and relatively fast turnaround        time. The method and system accomplishes three dimensional        nesting in reasonable times and obtains high levels of packing        densities.        Task 1:

In Task 1, parts or components to be packed and target boxes are definedand input in three dimensional space. Initially, a two dimensionalperipheral polygon for the cross-section of the three dimensional objectis defined and stored in terms of a list of x, y coordinates for thevertices of the boundary of the part's cross-section. The part'scross-sections are defined as multisided polygons. These polygons cantypically have 10's or 100's of sides depending on the complexity of thefigure (curvature of its sides) and the required accuracy of the nestingsolution. An extrusion coordinate for every x, y coordinate of thiscross-section z (x, y) defines a large class of solid components, thosewhich have box like appearance.

Nevertheless, not all components may be modeled in this fashion. Forexample, spheres can not be modeled with this simple extrusion method.

Consequently, in those cases a more general method is used that handlesall component shapes. In this case, a polygon is first defined for themaximum cross-section.

Then this cross-section polygon is subdivided into an (x, y) grid spaceof approximately ten subdivisions for each (depending on accuracydesired). Finally, left and right extrusion values are defined for eachgrid node. This more complicated description of the component isparticularly useful for complex parts.

A “Multiple Extrusion” solid molding technique is used. This techniquedefines a series of cross-sectional polygons in the xy plane (typically5 to 20 cross-sections), which are then multiply extruded/connected inthe z direction. Each cross-sectional polygon can be made of (typically)10 to 100 vertices described by x, y coordinate pairs. In addition eachcross-section is associated with a given z coordinate level or value.After connecting corresponding vertices across “z cross-section levels”a three-dimensional body fitted mesh is formed for the peripheralsurface of the parts. This method for part input enables a descriptionof a wide variety of 3D solids.

Task 2:

In Task 2, the intersection algorithm of the above described twodimensional form of the invention is extended into three dimensions.

In the three dimensional case of the invention, coordinates of the form(x, y, z) are used so that a check for minimum translationalintersection distance is:√(x₂ ²−x₁ ²)+(y₂ ²−y₁ ²)+(z₂ ²−z₁ ²)

This check may be done between every “peripheral node” of component 1with every “peripheral node” of part 2. Once that distance is obtained,it is subtracted from every node on one of the parts into whatconstitutes the translation of that part toward the other one until theyeffectively touch each other. The procedure calculates the intersectionof part 1 vertices with part 2 sides and part 2 vertices with part 1side, for each of overlapping cross-section planes in the z direction.The computation of vertex to side distances is described more fullybelow in connection with the nesting section of the program description.

Task 3:

The invention uses not only “primary” and “secondary” moves in thenesting and tiling steps, but also a “tertiary” move in the componentdepth direction. A third nested loop is used for numerical iteration inorder to apply the three dimensional intersection algorithm in the “z”direction. This third loop is used at every step of the calculationalprocedure Nesting, Primary Tiling and Secondary Tiling. In addition atertiary tiling step is used in order to place nests and ptiles into thez direction. This step is described more fully below in connection withthe computer program description.

Task 4:

Geometrical computations are used to determine the size of the nestvolume “Total Volume Extent”. Obtaining the volume of an assembly ofcomponents is a straight forward calculation. The volumetric extent ofthe void spaces between the components may be computed. However, in thepreferred form, Instead of computing nest's void volumes, the “PartialVolume Extent” of a nest is calculated. As described in more detail, inthe nesting section of the computer program description, this partialextent includes a measure of the volume intersected between parts whenforming a nest. This volume saved is the inverse or complement of thevoid volume used as a heuristic. This “intersection” saved volume ismuch easier to calculate, and has similar bearing in terms of theeffectiveness of a nest as the wasted void volume.

Heuristic algorithms are used for nest culling, total volume extent andpartial volume extent. These heuristics limit the number of nests passedto the primary tiling stage and the passage of the primary tiling tosecond tiling stage. This further limits the search tree and hasdramatically improved the performance of the expensive (computertimewise) tiling stage. Many different values for the number of nestingand tiling steps kept and weighting factors may be used for the mainheuristic variables. The weighting factors for both the heuristicalvariables (total and partial volume extents) are constant and set to1.0, as an example. Other numbers might be used.

Computer Program Description

This section provides a brief description of the computer program usedin computer 1114. The hardware platform is an Apple Macintosh computerwith a 17″ color monitor and laser printer. The CAD software used forthis embodiment consists of two packages—Autodesk's AutoCAD andGraphsoft's MiniCAD.

This embodiment was developed using the following combination ofsoftware tools: 1—Macintosh Programmer's Workshop (MPW) for theoperating environment (including editing and debugging); 2—FORTRANCompiler for the compilation of the program; and 3—MiniCAD for thethree-dimensional part input and output layout visualization. The CADpackage permits description of the 3D parts using the “MultipleExtrusion” method and interactive visualization of the 3D layouts.AutoCAD's AME solid modeling could alternatively be used to provide amore complete 3D solids description but with a more complex numericaldescription.

The inner regions of the nest have great importance in the invention (asopposed to the peripheral or edge regions near the target's boundaries).The computation is segmented into four sequential steps: Nesting,Primary Tiling, Secondary Tiling, and Tertiary Tiling/Layout. Theprocess is initiated with the nesting step, two irregular 3D objects orparts are taken and “brought together” until they “touch” each other ontheir periphery. This grouping of two parts is called a “nest”. Thesetwo parts are brought towards each other, as close together as possibleto form as compact a nest as possible. Depending on the complexity ofthe parts being nested, the computer program performs from many hundredsto many thousand different nests and ranks them according to thecompactness (using heuristic variables as previously described).

Once the nests are formed and ranked, a predetermined number of thosenests (the ones that ranked highest) are passed to the primary tilingstep. In this step, two nests are brought together in the x direction toform a primary tile or “ptile”. A ptile is made of two nests or fourparts. The same rational is used to form a ptile as to form a nest. Thatis, a grouping of two nests is created that forms the most possiblecompact unit. Typically, a few hundred ptiles are generated per eachnest passed from the nesting step. These ptiles are consequently rankedusing heuristic variables for compactness.

As small percentage of the ptiles formed (a predetermined number) arethen passed onto the secondary tiling step. In this case, two ptiles arebrought together in the y direction to form a secondary tile or “stile”.A stile is made up of two ptiles or four nests or eight parts. Again,the same rational as used for nest formation is used, an in the process,over a thousand different stiles are generated for each of the ptilespassed onto this step from the primary tiling step. For each of thesesecondary tiles produced, a tertiary tiling is implemented. In thetertiary tiling secondary tiles are brought together in the z direction,using a simple stacking rational. The stiles are brought only as closeas their closest boundaries, without optimization; that step isperformed for every stile generated without secondary tile culling. Inother embodiments, stiles are nested with appropriate culling to reducecomputational time.

Finally, a layout routine takes the data generated for the best tertiarytile and computes the ideal parallelpiped volume needed to contain asingle nest. A computation of the utilization ratio follows bycalculating the actual part volume and dividing that by the neededparallelepiped volume. Then the layout routine creates a file with the3D CAD commands that generate the best layout for the parts nested.

That layout may be displayed on monitor 116, or stored and/or printed inlayout buffer/printer 118.

The following provides a step by step description of the computerprogram, starting with the method for describing 3D parts and endingwith a description of the computation steps: Nesting, Tiling and Layout.

Three Dimensional Part Description

In order to describe and input parts in three dimensions, the programuses a “Solid Modeling” technique called “Multiple Extrusion”. Usingthis technique, a series of cross-sectional polygons are defined in thexy plane (typically 5 to 20 cross-sections), which are then multiplyextruded/connected in the z direction. Each cross-sectional polygon canbe made of (typically) 10 to 100 vertices described by x, y coordinatepairs. In addition, each cross-section is associated with a given zcoordinate level, or value. After connecting corresponding verticesacross “z cross-section levels”, a three-dimensional body fitted mesh isformed for the peripheral surface of the parts. This method for partinput enables description of a wide variety of 3D solids includingirregular boxes and spherical objects.

As an example of this methodology, FIGS. 12A and 12B shows a 3D object140 created with four cross-sectional z levels labeled z=0, 0.4, 0.8 and1.2. These are the values of the z coordinate at each cross-sectionallevel. Each cross-section in turn lies on the xy plane and is composedof ten vertices labeled with coordinates (x₁, x₂) through (x₁₀, y₁₀).This 3D figure is thus fully described with four sets of ten x, ycoordinate pairs for a total of eighty numbers. This particular figureof FIGS. 12A and 12B is used in the following illustration of theinvention.

The data defining the object 140 is stored in a text file, with all thex, y coordinate pairs. Thus, the invention enables a relatively straightforward design and input of a large variety of 3D parts using thismultiple extrusion model.

Part Volume Calculation

Three different volumes are calculated: 1—the actual part volume, 2—thetotal volume extent for nests and tiles, and 3—the partial volume extentfor nests and tiles. The computation of the part volume is relativelystraightforward: the quadrilateral faces formed by the four verticesacross two z levels are defined to be straight two-dimensional planes.If dz the z coordinate interval between cross-sections is referred to asdz and y_(min) is defined as the smallest y coordinate at eachcross-section, then the cross-section areas A_(k) and part volume V are:$A_{k} = {\sum\limits_{i = 0}^{N_{v}}\;{\frac{\, 1}{2}\left( {X_{i + 1} - X_{i}} \right)\left( {Y_{i + 1} + Y - {2Y_{\min}}} \right)}}$$V = {\sum\limits_{k = 1}^{N_{z}}\;{\frac{1}{2}\left( {A_{k + 1} + A_{k}} \right){\mathbb{d}z}}}$where N_(v) and N_(z) are the number of vertices per each cross-section,and the total number of cross-sections, respectively (10 and 4 in thecase of object 140).

The total extent volume is the smallest box that can contain aparticular nest or tile. This is illustrated on in FIG. 15. This totalvolume extent is calculated from the knowledge of the maximum andminimum x, y, z values for the parts within the nest or tile. Thepartial volume extent is illustrated in FIG. 16. That value is anaccurate measure of the actual volume used by the individual partswithin the nest or tile.

The partial extent is calculated by first computing the volumes of thesmallest boxes encompassing individual parts and subtracting the“intersecting” volume between the parts being grouped into the nest ortile. It is a smaller volume than the “total extent” and it points moredirectly to a measure of part grouping compactness.

The total volume extend and partial extent described above are usedthroughout the various steps in the computer program as the twoheuristic variables to determine the effectiveness of a particular nestor primary tile. Weighting factors are assigned as inputs to thecomputer program for these two extents so as to prefer one more to theother in the calculation. Both weights are set to 1.0 in the illustratedembodiment, but other values for these heuristic may be used fordifferent nest and primary tile culling.

The algorithms for calculation for a nest made up of left and rightparts (subscripts “l” and “r”) are shown below. In this example, ymin₁corresponds to the minimum y coordinate for the left part. The totalextent (totExt) and partial extent (Part Ext) are determined inaccordance with:

-   -   TotExt=[max(xmax_(l), xmax_(r))−min(xmin₁, xmin_(r))]*        -   [max(ymax_(l), ymax_(r))−min(ymin_(l), ymin_(r))]*        -   [max(zmax_(l), zmax_(r))−min(zmin_(l), zmax_(r))]    -   Ext_(l)=(xmax_(l)−xmin_(l))*(ymax_(l)−ymin_(l))*(zmax_(l)−zmin_(l))    -   Ext_(r)=(xmax_(r)−xmin_(r))*(ymax_(r)−ymin_(r))*(zmax_(r)−zmin_(r))    -   Part Ext=Ext_(l)+Ext_(r)−[xmax_(l)−xmin_(r)]*        -   [min(ymax_(l), ymax_(r))−max(ymin_(l), ymin_(r))]*        -   [min(zmax_(l), zmax_(r))−max(zmin_(l), zmin_(r))]            Basic Structures

The computer program contains five storage structures where all the datafor the various characteristics of the parts, nests, tiles and layoutsare accumulated. Those structures are the /Part/, /Nest/, /Ptile/,/Stile/ and /Layout/ structures (denoted symbolically surrounded byslashes “/”). These variables are more thoroughly described below. Thevariables within each structure are:

/Part/

/Part/ contains variables for the storage of the following partcharacteristics:

-   1. Part name which correspond to the text file which stores the    part's vertex data-   2. Number of vertices per cross-section layer: N_(v)-   3. Number of cross-section layers: N_(z)-   4. The x, y coordinates for the minimum and maximum values: x_(min)    . . . y_(max)-   5. The z coordinates for the lowest and highest cross-section    layer—z_(min), z_(max)-   6. The z layer interval: dz-   7. The X, Y arrays for the x, y coordinates of dimension (N_(v),    N_(z)-   7. The X, Y arrays for the x, y coordinates of dimension (N_(v),    N_(z))-   8. The Z array for the z coordinates of dimension (N_(z))    /Nest/

/Nest/ contains variables for the storage of the following nestcharacteristics, each of which is dimensioned to (7400) for the maximumnumber of possible nests that could be generated:

-   1. Left, Right part's side number—nsidel, nsider (an integer between    1–4)-   2. A switch variable indicating whether the right part has been    flipped in the z axis-   3. The right part's displacement relative to the left part to form    the nest: dx_(n), dy_(n), dz_(n)-   4. The total and partial extent for the nest: TotExt_(n), Part    Ext_(n)-   5. The ranked sequence from best to worst nest: Seqnc_(n)-   6. The total number of nests generated by the nesting step (not an    array)—N_(n)    /PTile/

/PTile/ It contains variables for the storage of the following Primarytile characteristics, each of which is dimensioned to (50,710) for themaximum number of possible nests that are allowed to pass to the primarytiling step=50, and the maximum number of ptiles generated per each nestpassed=710.

-   1. The right nest's displacement relative to the left nest, to form    the primary tile—dx_(p), dy_(p), dz_(p)-   2. The total and partial extent for the ptile: TotExt_(p), Part    Ext_(p)-   3. The ranked sequence from best to worst ptile for both the nest    passed and the ptile for that nest (singly dimensioned to (50)):    NSeqnc_(p), Tseqnc_(p)-   4. The total number of ptiles generated by the primary tiling step    for each nest passed to it (singly dimensioned to (50)): N_(p)    /STile/

/STile/ contains variables for the storage of the following Secondarytile characteristics, each of which is dimensioned to (50,1080) for themaximum number of possible ptiles that are allowed to pass to thesecondary tiling step=50, and the maximum number of stiles generated pereach ptile passed=1080.

-   1. The top ptile's displacement relative to the bottom ptile, to    form the secondary the: dx_(s), dy_(s), dz_(s)-   2. The effective parallelepipe volume used per part: Pv-   3. The ranked sequence from best to worst stile for both the ptile    passed and the stile for that ptile (singly dimensioned to (50)):    NSeqnc_(s), Tseqnc_(s)-   4. The total number of stiles generated by the secondary tiling step    for each ptile passed to it (singly dimensioned to (50)): N_(s)    /Layout/    /Layout/ contains variables for the storage of the following Layout    characteristics.-   1. The nest displacement for the best layout: dxlay_(n), dylay_(n),    dzlay_(n)-   2. The ptile displacement for the best layout: dxlay_(p), dylay_(p),    dzlay_(p)-   3. The stile displacement for the best layout: dxlay_(s), dylay_(s),    dzlay_(s)-   4. The z direction displacement for the best layout: dxlay_(z),    dylay_(z), dzlay_(z)-   5. The smallest effective parallelepipe volume used per part, in the    final layout: Pv_(min)    Nesting

Nesting is the process by which two irregular 3D objects or parts aretaken and brought together until they “touch” each other on theirperiphery. This grouping of two parts is called a “nest”. A nest istypically formed from two different parts, but for the pictorialexamples that follow the same part is used. The parts are broughttowards each other as close together as possible to form a nest ascompact as possible.

In performing this task in three dimensions, the parts to be nested arefirst circumscribed inside the smallest possible box. In the illustratedembodiment, the bottom and top z surfaces of the bounding box are notfully nested, but only are stacked; in other embodiments, full nesting(optimal) is performed. The other four lateral faces of this box arenumbered from 1 to 4. The program sets up a loop to go through allpossible combinations for each face of the left part to be approached byeach face of the right part, a total of ten combinations in all. Anotherten face-to-face combinations are to accommodate when the right part is“flipped” along the z axis, yielding a total of twenty face combinationsused for nesting. FIGS. 15A and 15B illustrate two nest approaches. FIG.15A shows nesting for sides 1 and 2 (left and right part respectively)and FIG. 15B shows sides 1 and 1 with the right part flipped.

Nesting is accomplished in two steps: (1) an axial move (in the xdirection or direction of approach), and (2) a tangential move for thefurther reduction of the overall volume of the nest. In the illustratedembodiment, the left part of the nest remains static while the rightpart is iteratively moved towards the left part in search for themaximum approach to it. Since the approach is in the x direction, a gridin the yz plane is first defined that grid contains the startinglocations for the right part's approach toward the left part. A total often grid locations is implemented in the y direction while in the zdirection, in increments of the interleval distance dz are steppedthrough.

As a result, the total number of yz plane grid points is 10(nzl+nzr−3).Where the maximum number of z cross-section levels allowed per part is20, there are a maximum of 370 iterative grid points in the yz plane.The number of nests generated (7400) is determined by combining these yzgrid points with the number of face to face combinations. For theexemplary object 140, having only 4 cross-sections there are only 50 yzgrid points and a total of 1,000 possible nests generated.

The axial move is accomplished by calculating N_(v) intersectiondistances from the left part's vertices towards the right part's sides,and N_(v) intersection distances from the right part's vertices towardthe left part's sides. This is performed on each and every z levelcross-section plane, preferably using the basic 2D intersectionalgorithm disclosed in the incorporated reference. The intersectionalgorythm is executed for every z plane cross-section and for each ofthe yz plane grid points. The amount that the right part is movedtowards the left one is the smallest of the 2·N_(v)·N_(z) distancescalculated for each of the 7,400 (maximum) nests to be computed.

The tangential move is an adjustment implemented once the axial move hasbeen performed. For the tangential move, the part is displaced with theintersecting vertex along the other part's intersecting side in thedirection along that side until another “collision” occurs and a morecompact nest is formed. In order to accomplish that move, parts are“rotated” by an angle such that the intersecting side is horizontal,allowing use of the same intersection routine as for the axial move.

FIGS. 16A–16E show the nesting procedure for one of the z cross-sectionlevels. The first step (FIG. 16A) shows the set up before the axialmove. The second step (FIG. 16B) shows the geometry after the axialmove. The third step (FIG. 16C) shows the geometry after rotation isdone so as to render the tangential direction horizontal. At this point,a similar intersection algorithm procedure to the axial move isperformed in order to obtain the smallest intersecting line to furtherapproach the right part towards the left one. The fourth step (FIG. 16D)depicts the set up after the right part has been moved, and finally thefifth step (FIG. 16E) shows the final nested situation with the frame ofreference rotated back to the original position.

Once the nests are formed their total and partial volume extents arecalculated and stored. Then, a sorting of these nests is performed andthe nests are sequenced from best to worst by seeking for the smallestvolume extents. Weight factors are applied to each of the two heuristicvariables in order to determine their individual effectiveness. Thisprocess is referred to as Nest Ranking. FIGS. 17A and 17B show two ofthe better nests formed with the test object 140.

Primary Tiling

Once the nests are formed and ranked, a predetermined number of thenests (the ones that ranked highest) are passed to the primary tilingstep. In this step two nests are brought together in the x direction toform a primary tile or “ptile”. A ptile is made of two nests or fourparts, and the same rational is used to form a ptile as used to form anest. The primary tiling procedure starts by placing two nests side byside in the x direction. As in the nesting step, the left nest remainsstatic, while the right nest is moved towards the left one as much aspossible.

A grid is formed in the yz plane for the iterative approach, with tengrid points in the y direction and a number of z grid pointscorresponding to all the corresponding intersecting z cross-sectionlevels between the two nests. The maximum number of z grid points2(Nzl+Nzr−3)−3 is 71. Typically, a few hundred ptiles are generated pereach nest passed from the nesting step. As a maximum for the exemplarycomputer program (only twenty z levels allowed), there are 710 ptilesfor every nest. For the test object 140, there are only 70 ptiles pernest. Since the maximum number of nests passed to the primary tilingstep is set to 50, a maximum of 3,550 ptiles are generated, but for testobject 140, the maximum number of ptiles is 350.

Once the two nests are set up and made ready for axial compression (inthe x direction), the intersection algorithm is recalled in order tocalculate the smallest distance to approach the right nest towards theleft one until any part on the right nest touches any part on the leftnest. The computer program numbers the parts set up in this process inthe following manner:

-   -   Part 1: Left Part—Left Nest    -   Part 2: Right Part—Left Nest    -   Part 3: Left Part—Right Nest    -   Part 4: Right Part—Right Nest

The intersection algorithm routine is then performed four times insequence to check for the smallest axial approach. The routine is calledfor parts 1 and 3, then for part 1 and 4, then for parts 2 and 3, andfinally for parts 2 and 4. This allows determination of the collision ofany of the parts on the left nest with any of the parts on the rightnest. FIGS. 18A and 18B show first the set up situation for a particularprimary tile of test object 140 (FIG. 18A), and then the actual tileachieved (FIG. 18B).

Secondary Tiling

A small percentage of the ptiles formed (a predetermined number) arethen passed onto the secondary tiling step. In the secondary tilingstep, two ptiles are brought together in the y direction to form asecondary tile or “stile”. An stile is made up of two ptiles or fournests, or eight parts. In order to set up the geometry for secondarytiling, first two ptiles are placed on the bottom of the domain. Thenone more nest is set up along the top that is to be nested downwardstowards the two ptiles near the bottom of the space. The two ptiles onthe bottom are composed of parts numbered 1 through 8 from left toright. The two parts making up the nest at the top, are labeled 9 and10. The top nest (the one to be dynamically moved to form the stile) ispositioned according to whether the ptile has downward or upward flow(dy_(p)<0 or dy_(p)>0).

FIG. 19 shows geometry prior to the secondary tiling iteration for thecase of dy_(p)>0. In that figure, the top nest is positioned just abovethe bottom left three nests and to the left of the bottom rightmostnest. The top nest is then iterated on a xz grid in a similar manner asdone in the ptile process, except that the x displacement for this grid(as shown on the figure) is equal to the primary tile period. Again thesame rational as before is used, and in the process over a thousanddifferent stiles are generated for each of the ptiles passed onto thisstep from the primary tiling step.

In order to accomplish a y direction secondary tiling, the coordinatesystem is rotated 90 degrees, and the previously described axial (xdirection) intersection algorithm is performed. In this case a check isperformed to determine the smallest approach distance between any of thetwo top parts (part nos. 9 and 10) and any of the six bottom parts (partnos. 1 through 6 for the dy_(p)>0 case). In the case of dy_(p)<0 the topnest is set up just to the right of the bottom leftmost nest. As aresult, the intersection test is made between parts 9 and 10 (top nest)and parts 3 through 8 (bottom tiles). The resulting stile is shown inFIG. 20.

Tertiary Tiling/Layout

Performance of the primary and secondary tiling steps yields twonumbers: the primary and the secondary tiling period. These numbersrepresent the displacements in the primary and secondary tilingdirections, and replication of as may nests as desired on a skewed planeformation for these parts. For each of these secondary tiles produced, atertiary tiling is also implemented. In the tertiary tiling process ofthe illustrated embodiment, secondary tiles are brought together in thez direction using a simple stacking rationale, bringing the stiles nocloser than their closest boundaries. In that form, the layout is aninexpensive calculation and can be performed for every stile generatedwithout the need for secondary tile culling. In other forms of theinvention, the secondary tiled configuration can be optimally nestedinto stacks with optimal packing. The latter process can be performedwith reduced computational time using the above described heuristicmethod.

The “stacking” of skewed planes on top of each other is performed bydisplacing the layers to avoid collisions when nests or tiles have beenformed with non-zero z direction displacements.

A simple layout routine takes the data generated for the best tertiarytile and computes the ideal parallelepiped volume needed to contain asingle nest. This parallelepiped volume is calculated using thecoordinates for the three displacements necessary to form a layout: theprimary tiling period (x_(p), y_(p), z_(p)), the secondary tiling period(x_(s), y_(s), z_(s)) and the displaced z direction stacking period(x_(z), y_(z), z_(z)). The volume of the parallelepiped formed iscalculated from the following formulae:l _(p)=√{square root over (x _(p) ² +y _(p) ² +z _(p) ²)}l _(s)=√{square root over (x _(s) ² +y _(s) ² +z _(s) ²)}

l _(z)=√{square root over (x _(z) ² +y _(z) ² +z _(z) ²)}$l_{p} = \sqrt{x_{p}^{2} + y_{p}^{2} + z_{p}^{2}}$$l_{s} = \sqrt{x_{s}^{2} + y_{s}^{2} + z_{s}^{2}}$$l_{z} = \sqrt{x_{z}^{2} + y_{z}^{2} + z_{z}^{2}}$${\cos\mspace{11mu}\theta_{ps}} = \frac{{x_{p}x_{s}} + {y_{p}y_{s}} + {z_{p}z_{s}}}{l_{p}l_{s}}$${\cos\mspace{11mu}\theta_{p\; z}} = \frac{{x_{p}x_{z}} + {y_{p}y_{z}} + {z_{p}z_{z}}}{l_{p}l_{z}}$${\cos\mspace{11mu}\theta_{s\; z}} = \frac{{x_{s}x_{z}} + {y_{s}y_{z}} + {z_{s}z_{z}}}{l_{s}l_{z}}$Vol = l_(p)l_(s)l_(z ) sin   θ_(p s) sin   θ_(p z) sin   θ_(s z)

A computation of the utilization ratio is determined by calculating theactual part volume and dividing that volume by the needed parallelepipedvolume. Then the layout routine creates a file with the 3DCAD commandsthat generate the best layout for the parts nested.

Performance of the Illustrated Embodiment

EXAMPLE 1 Layout Results Vs Number of Nests/PTiles Kept

The above defined computer system (FIG. 11) and computer program wasimplemented for the test object 140 of FIG. 12. The number of nests andptiles kept for passage to further stages of the computation was variedsimultaneously between 5 and 50. That is, these two numbers were variedequally (N_(n-pt)=N_(pt-st)). A variation from 5 to 50 represents morethan two orders of magnitude variation in computation time. Theprogrammed computer produced a layout result for only 5 nests/ptileskept in less than a minute, whereas it produced a layout for 50 nests/ptile in approximately one hour.

The test object 140 tested is a very simple one with only a few verticesand cross-section levels to describe it. More complex parts may havetypically 10 times more vertices and say 5 times more cross-sections todescribe it. This fifty-fold increase in computation time means that fora small number of nests/ptiles kept, the computer processing time willnow be on the order of an hour, whereas for the large number ofnests/ptiles kept, the numerical solution could typically take manyhours. Even with the use of faster computers (e.g., a ten fold increasein speed), a long wait would be expected for a 3D layout. The heuristicnest culling process, achieves near optimal layout utilizationefficiencies, while using much smaller computation times.

The following table shows volume utilization using the configuration ofthis example, the number of nests/ptiles kept for the test object 140.

N_(n-pt) N_(pt-st) Percent Volume Utilization 5 5 35% 10 10 41% 20 2042% 50 50 42%The data in the above table suggests that, keeping 20 nests is all thatis needed in order to achieve near optimal results. More complex partswill also require a larger number of nests/ptiles kept for passage ontohigher stages in the computation.

The three layouts produced for the three cases of 5, 10 and 20nests/ptiles kept are shown in FIGS. 21–23. The N=10 case (FIG. 22) useda different nest than the N=5 case (FIG. 21) and yielded an increase inefficiency of 6%. The N=20 case (FIG. 23) kept the same nest used in theN=10 case but used a more efficient ptile (which was not kept within theten limitation) in order to increase the utilization efficiency another1%. In order to achieve near optimal volume utilization, the weightingfactors of the two heuristic variables can be varied in order toascertain their relative relevance. Other heuristics can also be used tofurther shorten computation times, while improving the utilizationefficiency.

In other embodiments, the computer program incorporates z face nestingand tiling as well as lateral nesting tiling. The tangential move of thenesting step is used in both the primary and second tiling steps toproduce even more compact layouts. A full intersecting tertiary tilingstep (as opposed to the simple “semi-stacking” tiling procedure) canalso be used for improved layouts. A more complex 3D part descriptionmay be used, permitting multiple connected cross-sections into thegeometric algorithms of the numerical calculation.

The invention may be embodied in other specific forms without departingfrom the spirit or essential characteristics thereof. The presentembodiments are therefore to be considered in all respects asillustrative and not restrictive, the scope of the invention beingindicated by the appended claims rather than by the foregoingdescription, and all changes which come within the meaning and range ofequivalency of the claims are therefore intended to be embraced therein.

1. Method defining a packing configuration for a plurality of twodimensional (2D) objects in a target plane, comprising the computergenerated steps of: A. generating signals defining each of said 2Dobjects with respect to an object coordinate system having orthogonalaxes X₀ and Y₀, in terms of a plurality of points representative ofboundary points on said objects, B. associating two of said objects todefine an object pair, C. generating a nest signal representation ofsaid objects of said object pair nested with respect to a nestcoordinate system having orthogonal axes X_(N) and Y_(N), to define aplurality of close-packed candidate nests in which the pairwisepositions of two said objects of each candidate nest are characterizedby relatively small planar spaces between the respective objects, D.selecting a subset of said candidate nests in accordance withpredetermined nest criteria, E. for each of said selected candidatenests, generating a tile signal representative of two such nests tiledwith respect to a tile coordinate system having orthogonal axes X_(T)and Y_(T), said tiling steps including the sub steps of: i. generating aprimary tile signal representative of said two nests tiled with respectto said X_(T) axis by translating said nests with relative motion in thedirection of said X_(T) and Y_(T) axes, to define a plurality ofcandidate primary tiles in which the pairwise positions of said twonests of each candidate primary tile are characterized by relativelysmall planar spaces between said nests, ii. selecting a subset of saidcandidate primary tiles in accordance with predetermined primary tilecriteria, iii. for each of said selected primary tiles, generating asecondary tile signal representative of a nest and said primary tiletiled with respect to said Y_(T) axis by translating said nest withrespect to said primary tile with relative motion in the direction ofsaid X_(T) and Y_(T) axes, to define a plurality of candidate secondarytiles in which the pairwise positions of said nest and said primary tileare characterized by relatively small planar spaces between said nestand the nests of said primary tile, iv. selecting one of said candidatesecondary tiles in accordance with predetermined secondary tilecriteria, thereby defining the optimal nest and primary tile, saidoptimal nest defining said packing configuration.
 2. The methodaccording to claim 1 comprising the further steps of: F. generating aninitial tile signal representative of an initial secondary tilepositioned in said target plane at a position other than adjacent theboundary of said target plane, and G. generating an area packing signalrepresentative of said initial tile as augmented additional secondarytile extending successively from said initial secondary tile in thedirection of each of said X_(T), and Y_(T) axes, whereby adjacentsecondary tiles are substantially identically pairwise configured insaid target plane in the direction of said X_(T) and Y_(T) axes.
 3. Asystem for defining a packing configuration for a plurality of twodimensional (2D) objects in a target plane, comprising: A. means forgenerating signals defining each of said 2D objects with respect to anobject coordinate system having orthogonal axes X₀ and Y₀, in terms of aplurality of points representative of boundary points on said objects,B. means for associating two of said objects to define an object pair,C. means for generating a nest signal representation of said objects ofsaid object pair nested with respect to a nest coordinate system havingorthogonal axes X_(N) and Y_(N), to define a plurality of close-packedcandidate nests in which the pairwise positions of two said objects ofeach candidate nest are characterized by relatively small planar spacesbetween the respective objects, D. means for selecting a subset of saidcandidate nests in accordance with predetermined nest criteria, E.tiling means operative for each of said selected candidate nests, forgenerating a tile signal representative of two such nests tiled withrespect to a tile coordinate system having orthogonal axes X_(T) andY_(T), said tiling means including: i. means for generating a primarytile signal representative of said two nests tiled with respect to saidX_(T) axis by translating said nests with relative motion in thedirection of said X_(T) and Y_(T) axes, to define a plurality ofcandidate primary tiles in which the pairwise positions of said twonests of each candidate primary tile are characterized by relativelysmall planar spaces between said nests, ii. means for selecting a subsetof said candidate primary tiles in accordance with predetermined primarytile criteria, iii. means operative for each of said selected primarytiles, for generating a secondary tile signal representative of a nestand said primary tile tiled with respect to said Y_(T) axis bytranslating said nest with respect to said primary tile with relativemotion in the direction of said X_(T) and Y_(T) axes, to define aplurality of candidate secondary tiles in which the pairwise positionsof said nest and said primary tile are characterized by relatively smallplanar spaces between said nest and the nests of said primary tile, iv.means for selecting one of said candidate secondary tiles in accordancewith predetermined secondary tile criteria, thereby defining the optimalnest and primary tile, said optimal nest defining said packingconfiguration.
 4. The system according to claim 3 further comprising: F.means for generating an initial tile signal representative of an initialsecondary tile positioned in said target plane at a position other thanadjacent the boundary of said target plane, and G. means for generatingan area packing signal representative of said initial tile as anaugmented additional secondary tile extending successively from saidinitial secondary tile in the direction of each of said X_(T), and Y_(T)axes, whereby adjacent secondary tiles are substantially identicallypairwise configured in said target plane in the direction of said X_(T)and Y_(T) axes.
 5. Method of defining a packing configuration for aplurality of three dimensional (3D) objects in a target volume,comprising the computer generated steps of: A. generating an objectsignal defining each of said 3D objects with respect to an objectcoordinate system having orthogonal axes X₀, Y₀ and Z₀, in terms of aplurality of points representative of boundary points on said objects,B. associating two of said objects to define an object pair, C.generating a nest signal representative of said objects of said objectpair nested with respect to a nest coordinate system having orthogonalaxes X_(N) , Y_(N) and Z_(N), to define a plurality of close-packedcandidate nests in which the pairwise positions of said objects of eachcandidate nest are characterized by relatively small volumetric spacesbetween the respective objects, D. selecting a subset of said candidatenests in accordance with predetermined nest criteria, E. for each ofsaid selected candidate nests, generating a tile signal representativeof two of said nests tiled with respect to a tile coordinate systemhaving orthogonal axes X_(T), Y_(T) and Z_(T), said tile generating stepincluding the sub steps of: i. generating a primary tile signalrepresentative of said two nests tiled with respect to said X_(T) axisby translating said nests with relative motion in the direction of saidX_(T), Y_(T) and Z_(T) axes, to define a plurality of candidate primarytiles in which the pairwise positions of said two nests of eachcandidate primary tile are characterized by relatively small volumetricspaces between said nests, ii. selecting a subset of said candidateprimary tiles in accordance with predetermined primary tile criteria,iii. for each of said selected primary tiles, generating a secondarytile signal representative of one of said nests of said primary tilesand said primary tile tiled with respect to said Y_(T) axis bytranslating said nest with respect to said primary tile with relativemotion in the direction of said X_(T), Y_(T) and Z_(T) axes, to define aplurality of candidate secondary tiles in which the pairwise positionsof said nest and said primary tile are characterized by relatively smallvolumetric spaces between said nest and the nests of said primary tile,iv. selecting one of said candidate secondary tiles in accordance withpredetermined secondary tile criteria, v. for each of said selectedsecondary tiles, generating a tertiary tile signal representative of twoof said secondary tiles tiled with respect to said Z_(T) axis bytranslating said secondary tiles with respect to each other withrelative motion of in the direction of said X_(T), Y_(T), and Z_(T) axesto define a plurality of tertiary tiles in which the pairwise positionsof said secondary tiles are characterized by relatively small volumetricspaces between said secondary tiles, vi. selecting one of said tertiarytiles from said candidate tertiary tiles in accordance withpredetermined tertiary tile criteria, thereby defining an optimal nestof said primary tile and said secondary tile, said optimal nest definingsaid packing configuration.
 6. The method according to claim 5comprising the further step of F. generating an initial tile signalrepresentative of an initial tertiary tile positioned in said targetvolume at a position other than adjacent the boundary of said targetvolume, and G. generating a volume packing signal representative of saidinitial tile as augmented additional tertiary tiles extendingsuccessively from said initial tertiary tile in the direction of each ofsaid X_(T), Y_(T), and Z_(T) axes, whereby adjacent tertiary tiles aresubstantially identically pairwise configured in said target volume inthe direction of said X_(T), Y_(T), and Z_(T) axes.